package leetcode.t2String;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author K
 * @date 2024/1/23 14:34
 */
public class T17_LetterCombinations {

    public static List<String> letterCombinations(String digits) {
        List<String> combinations = new ArrayList<>();
        if (digits.length() == 0) {
            return combinations;
        }
        Map<Character, String> phoneMap = new HashMap<Character, String>() {{
            put('2', "abc");
            put('3', "def");
            put('4', "ghi");
            put('5', "jkl");
            put('6', "mno");
            put('7', "pqrs");
            put('8', "tuv");
            put('9', "wxyz");
        }};

        backtrack(combinations, phoneMap, digits, 0 , new StringBuilder());
        return combinations;
    }

    private static void backtrack(List<String> combinations, Map<Character, String> phoneMap, String digits, int index, StringBuilder combination) {
        if (index == digits.length()) {
            combinations.add(combination.toString());
            return;
        }

        char num = digits.charAt(index);
        for (char c : phoneMap.get(num).toCharArray()) {
            backtrack(combinations, phoneMap, digits, index+1, combination.append(c));
            combination.deleteCharAt(index);
        }
    }

    public static void main(String[] args) {
        List<String> strings = letterCombinations("23");
        List<String> strings1 = letterCombinations("");
        List<String> strings2 = letterCombinations("2");

        System.out.println();
    }

}
